package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.utils.bean.GroupInfo;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * app用户对象 app_user
 *
 * @author ruoyi
 * @date 2023-02-27
 */
public class AppUser extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    // @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;

    /**
     * 状态，0：正常，1：冻结
     */
    @Excel(name = "状态，0：正常，1：冻结")
    private Long state;

    /**
     * 账号
     */
    @Excel(name = "账号")
    private String account;

    /**
     * 用户名
     */
    @Excel(name = "用户名")
    private String username;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    private String mobile;

    /**
     * 密码
     */
    @Excel(name = "密码")
    private String password;

    /**
     * 支付密码
     */
    @Excel(name = "支付密码")
    private String payPass;

    /**
     * 网易云通信token
     */
    @Excel(name = "腾讯云通信token")
    private String neteaseToken;

    /**
     * 性别，0：未知，1：男性，2：女性
     */
    @Excel(name = "性别，0：未知，1：男性，2：女性")
    private Integer sex;

    /**
     * 头像
     */
    @Excel(name = "头像")
    private String headImg;

    /**
     * 朋友圈背景图
     */
    @Excel(name = "朋友圈背景图")
    private String backImg;

    /**
     * 用户签名
     */
    @Excel(name = "用户签名")
    private String sign;

    /**
     * 用户生日
     */
    @Excel(name = "用户生日")
    private String birth;

    /**
     * 用户email
     */
    @Excel(name = "用户email")
    private String email;

    /**
     * 余额
     */
    @Excel(name = "余额")
    private BigDecimal balance;

    /**
     * 待提现
     */
    @Excel(name = "待提现")
    private BigDecimal forWithdrawal;

    /**
     * 支付宝账号
     */
    @Excel(name = "支付宝账号")
    private String zfb;

    /**
     * 真实姓名
     */
    @Excel(name = "真实姓名")
    private String realName;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal allBetMoney;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal allWinMoney;

    /**
     * $column.columnComment
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal profitMoney;

    /**
     * 用户角色，管理人员可以创建特殊群，0：管理人员，1：客服人员，2：普通人员
     */
    @Excel(name = "用户角色，管理人员可以创建特殊群，0：管理人员，1：客服人员，2：普通人员")
    private Integer hasLot;

    /**
     * 是否需要验证码，0：不需要，1：需要
     */
    @Excel(name = "是否需要验证码，0：不需要，1：需要")
    private Integer isVerify;

    /**
     * 会员组id
     */
    @Excel(name = "会员组id")
    private Long memberId;

    /**
     * 收到红包总金额
     */
    @Excel(name = "收到红包总金额")
    private BigDecimal redTotalReceive;

    /**
     * 账号account剩余修改次数
     */
    @Excel(name = "账号account剩余修改次数")
    private Long accountModifyCount;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastLoginTime;

    /**
     * 上级渠道用户id
     */
    @Excel(name = "上级渠道用户id")
    private Long upDitchUserId;

    /**
     * 是否可被加 0 不可 1 可以
     */
    @Excel(name = "是否可被加 0 不可 1 可以")
    private Long isadd;


    @Excel(name = "最后登录ip")
    private String lastIp;

    @Excel(name = "邀请码")
    private String invitationCode;

    /**
     * 腾讯云IM 在线状态
     */
    private String onlineState;
    /**
     * 腾讯云IM 在线设备
     */
    private String onlineDetail;

    /**
     * 设备信息  ios android  web
     */
    private String equipment;

    private String whitelistIp;

    @TableField(exist = false)
    @ApiModelProperty("用户名")
    private String userName;

    @ApiModelProperty("usdt收款地址")
    private String collectionAddress;

    /**
     * 身份证号码
     */
    private String idNumber;

    /**
     * 身份认证状态 0 未提交 1 已认证
     */
    private Integer authState;

    @TableField(exist = false)
    private List<GroupInfo> groupInfos;

    public List<GroupInfo> getGroupInfos() {
        return groupInfos;
    }

    public void setGroupInfos(List<GroupInfo> groupInfos) {
        this.groupInfos = groupInfos;
    }

    public String getIdNumber() {
        return idNumber;
    }

    public void setIdNumber(String idNumber) {
        this.idNumber = idNumber;
    }

    public Integer getAuthState() {
        return authState;
    }

    public void setAuthState(Integer authState) {
        this.authState = authState;
    }

    public String getCollectionAddress() {
        return collectionAddress;
    }

    public void setCollectionAddress(String collectionAddress) {
        this.collectionAddress = collectionAddress;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getWhitelistIp() {
        return whitelistIp;
    }

    public void setWhitelistIp(String whitelistIp) {
        this.whitelistIp = whitelistIp;
    }

    public String getEquipment() {
        return equipment;
    }

    public void setEquipment(String equipment) {
        this.equipment = equipment;
    }

    public String getOnlineState() {
        return onlineState;
    }

    public void setOnlineState(String onlineState) {
        this.onlineState = onlineState;
    }

    public String getOnlineDetail() {
        return onlineDetail;
    }

    public void setOnlineDetail(String onlineDetail) {
        this.onlineDetail = onlineDetail;
    }

    public String getInvitationCode() {
        return invitationCode;
    }

    public void setInvitationCode(String invitationCode) {
        this.invitationCode = invitationCode;
    }

    public String getLastIp() {
        return lastIp;
    }

    public void setLastIp(String lastIp) {
        this.lastIp = lastIp;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setState(Long state) {
        this.state = state;
    }

    public Long getState() {
        return state;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getAccount() {
        return account;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getMobile() {
        return mobile;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public void setPayPass(String payPass) {
        this.payPass = payPass;
    }

    public String getPayPass() {
        return payPass;
    }

    public void setNeteaseToken(String neteaseToken) {
        this.neteaseToken = neteaseToken;
    }

    public String getNeteaseToken() {
        return neteaseToken;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Integer getSex() {
        return sex;
    }

    public void setHeadImg(String headImg) {
        this.headImg = headImg;
    }

    public String getHeadImg() {
        return headImg;
    }

    public void setBackImg(String backImg) {
        this.backImg = backImg;
    }

    public String getBackImg() {
        return backImg;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getSign() {
        return sign;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    public String getBirth() {
        return birth;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmail() {
        return email;
    }

    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }

    public BigDecimal getBalance() {
        return balance;
    }

    public void setForWithdrawal(BigDecimal forWithdrawal) {
        this.forWithdrawal = forWithdrawal;
    }

    public BigDecimal getForWithdrawal() {
        return forWithdrawal;
    }

    public void setZfb(String zfb) {
        this.zfb = zfb;
    }

    public String getZfb() {
        return zfb;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getRealName() {
        return realName;
    }

    public void setAllBetMoney(BigDecimal allBetMoney) {
        this.allBetMoney = allBetMoney;
    }

    public BigDecimal getAllBetMoney() {
        return allBetMoney;
    }

    public void setAllWinMoney(BigDecimal allWinMoney) {
        this.allWinMoney = allWinMoney;
    }

    public BigDecimal getAllWinMoney() {
        return allWinMoney;
    }

    public void setProfitMoney(BigDecimal profitMoney) {
        this.profitMoney = profitMoney;
    }

    public BigDecimal getProfitMoney() {
        return profitMoney;
    }

    public void setHasLot(Integer hasLot) {
        this.hasLot = hasLot;
    }

    public Integer getHasLot() {
        return hasLot;
    }

    public void setIsVerify(Integer isVerify) {
        this.isVerify = isVerify;
    }

    public Integer getIsVerify() {
        return isVerify;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setRedTotalReceive(BigDecimal redTotalReceive) {
        this.redTotalReceive = redTotalReceive;
    }

    public BigDecimal getRedTotalReceive() {
        return redTotalReceive;
    }

    public void setAccountModifyCount(Long accountModifyCount) {
        this.accountModifyCount = accountModifyCount;
    }

    public Long getAccountModifyCount() {
        return accountModifyCount;
    }

    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }

    public Date getLastLoginTime() {
        return lastLoginTime;
    }

    public void setUpDitchUserId(Long upDitchUserId) {
        this.upDitchUserId = upDitchUserId;
    }

    public Long getUpDitchUserId() {
        return upDitchUserId;
    }

    public void setIsadd(Long isadd) {
        this.isadd = isadd;
    }

    public Long getIsadd() {
        return isadd;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("userId", getUserId()).append("createTime", getCreateTime()).append("state", getState()).append("account", getAccount()).append("username", getUsername()).append("mobile", getMobile()).append("password", getPassword()).append("payPass", getPayPass()).append("neteaseToken", getNeteaseToken()).append("sex", getSex()).append("headImg", getHeadImg()).append("backImg", getBackImg()).append("sign", getSign()).append("birth", getBirth()).append("email", getEmail()).append("balance", getBalance()).append("forWithdrawal", getForWithdrawal()).append("zfb", getZfb()).append("realName", getRealName()).append("allBetMoney", getAllBetMoney()).append("allWinMoney", getAllWinMoney()).append("profitMoney", getProfitMoney()).append("hasLot", getHasLot()).append("isVerify", getIsVerify()).append("memberId", getMemberId()).append("redTotalReceive", getRedTotalReceive()).append("accountModifyCount", getAccountModifyCount()).append("lastLoginTime", getLastLoginTime()).append("upDitchUserId", getUpDitchUserId()).append("isadd", getIsadd()).toString();
    }
}
